#ifndef SERVERCOMMANDS_H
#define SERVERCOMMANDS_H

#include <string>

class ServerCommand {
protected:
	std::string params;
public:
	virtual ~ServerCommand(){}
	virtual std::string execute(std::string &username) = 0;
	void parametros(std::string p);
};

class GetFilesCommand: public ServerCommand{
public:
	virtual std::string execute(std::string &username);
};

class GetFileCommand: public ServerCommand{
public:
	virtual std::string execute(std::string &username);
};

class TryUpdateUpFileCommand: public ServerCommand{
public:
	virtual std::string execute(std::string &username);
};

class TryUpdateDownFileCommand: public ServerCommand{
public:
	virtual std::string execute(std::string &username);
};

class UpdateFileCommand: public ServerCommand{
public:
	virtual std::string execute(std::string &username);
};

class UpdateFileEmisorCommand: public ServerCommand{
public:
	virtual std::string execute(std::string &username);
};

class UpdateFileReceptorCommand: public ServerCommand{
public:
	virtual std::string execute(std::string &username);
};

class UpdateFileReceptor2Command: public ServerCommand{
public:
	virtual std::string execute(std::string &username);
};

class UpdateFileFinishedCommand: public ServerCommand{
public:
	virtual std::string execute(std::string &username);
};

class EraseFileCommand: public ServerCommand{
public:
	virtual std::string execute(std::string &username);
};

class UploadFileCommand: public ServerCommand{
public:
	virtual std::string execute(std::string &username);
};

class LogoutCommand: public ServerCommand{
public:
	virtual std::string execute(std::string &username);
};

#endif
